from scapy.all import *
import scapy.all as scapy

from scapy.all import sniff
from scapy.all import rdpcap

def Callback(packet):
    print('src:%s----->dst:%s' % (packet[IP].src, packet[IP].dst))
    print('TTL:%s' % packet[IP].ttl)
    # print(packet.show())  # 内置的show()函数打印数据包内容
    print(packet.summary())  # 内置的summary()函数打印数据包内容


def count_packets(pkt):
    global icmp_count
    if pkt.haslayer('ICMP'):
        icmp_count += 1

conf.bufsize=104857600  #增大缓存，防止丢包
# filter = 'src host 192.168.1.5 && src port 2332'
filter = 'tcp && src host 192.168.1.5 || dst host 192.168.1.5'

pkt = sniff(iface='Red Hat VirtIO Ethernet Adapter #2', filter=filter, timeout=30, prn=Callback)
print(pkt)

pkt.summary()
# pkt[1].src
# pkt[1].dst
# pkt[1].show()
# IP in pkt   #判断是否存在IP层


print(len(pkt))
print("源mac地址为：" + pkt[0][Ether].src)
print("目的mac地址为：" + pkt[0][Ether].dst)
print("源IP地址为：" + pkt[0][IP].src)
print("目的IP地址为：" + pkt[0][IP].dst)


# for pkt_i in pkt:
#     print("源mac地址为：" + pkt_i[Ether].src)
#     print("目的mac地址为：" + pkt_i[Ether].dst)
#     print("源IP地址为：" + pkt_i[IP].src)
#     print("目的IP地址为：" + pkt_i[IP].dst)





